package pe.gob.osce.sirenas.model.jpa;

/**
*  Resumen				
*  Objeto		       	: FichaArbitral.java
*  Descripción		  	: .
*  Fecha de Creación    : 26/02/2015.
*  Pry de Creación 		: RNA/RNS.
*  Autor			   	: Alberto Vargas
*  -------------------------------------------------------------------------------------
*  Modificaciones
*  Motivo	            Fecha           Nombre         				Descripción
*  -------------------------------------------------------------------------------------
*/


import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;




@Entity
@Table(name="MSE_REG_FICHA", schema="RNAS" )
@SequenceGenerator(name = "sqId_Mse_Ficha", sequenceName = "RNAS.ID_MSE_FICHA", allocationSize=1)
public class FichaArbitral implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 6707663430728940399L;

	@Id 
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sqId_Mse_Ficha")	
	@Column(name="N_ID_FICHA")
	private Long idFicha;
	@Column(name="N_ID_PERSONA")
	private Long idPersona;	
	@Column(name="C_COD_TIPO_FICHA")
	private String  tipoFicha;
	
	@Column(name="N_NUM_FICHA")
	private String  numFicha;	
	@Column(name="N_IND_MODALIDAD_ARBITRO")
	private Integer  indModalidadArbitro;	
	@Column(name="D_FEC_MODALIDAD")
	private Date fechaModalidad;
	@Column(name="N_ID_ESTADOFICHA")
	private Long idEstadoFicha;

	@Column(name="C_COD_IP_REGISTRO")
	private String  codIpRegistro;	
	@Column(name="N_ANN_REGISTRO")
	private Integer anioRegistro;
	
	@Column(name="N_IND_ESTADO")
	private Long estado;
	@Embedded
	private Auditoria auditoria;


	@OneToMany(mappedBy = "fichaArbitral")
    private List<Acreditacion> listaAcreditacion;
	
	@OneToMany(mappedBy = "fichaArbitral")
    private List<HistorialEstado> listaHistorialEstado;
	
	@OneToMany(mappedBy = "fichaArbitral")
    private List<FormacionAcademica> listaFormacionAcademica;
	
	@OneToMany(mappedBy = "fichaArbitral")
    private List<EspecialidadAcademica> listaEspecialidadAcademica;
	
	@OneToMany(mappedBy = "fichaArbitral")
    private List<Capacitacion> listaCapacitacion;
		
	@OneToMany(mappedBy = "fichaArbitral")
    private List<Docencia> listaDocencia;
		
	@OneToMany(mappedBy = "fichaArbitral")
    private List<TrayectoriaArbitral> listaTrayectoria;
	
	@OneToMany(mappedBy = "fichaArbitral")
    private List<ExperienciaLaboral> listaExpLaboral;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="N_ID_PERSONA", insertable=false, updatable=false)
	private Persona	persona;

	/**
	 * Metodo que permite obtener idFicha.
	 * @return idFicha , tipo Long.
	 */
	public Long getIdFicha() {
		return idFicha;
	}

	/**
	 * Permite actualizar idFicha.
	 * @param idFicha, tipo Long.
	 */
	public void setIdFicha(Long idFicha) {
		this.idFicha = idFicha;
	}

	/**
	 * Metodo que permite obtener idPersona.
	 * @return idPersona , tipo Long.
	 */
	public Long getIdPersona() {
		return idPersona;
	}

	/**
	 * Permite actualizar idPersona.
	 * @param idPersona, tipo Long.
	 */
	public void setIdPersona(Long idPersona) {
		this.idPersona = idPersona;
	}

	/**
	 * Metodo que permite obtener numFicha.
	 * @return numFicha , tipo String.
	 */
	public String getNumFicha() {
		return numFicha;
	}

	/**
	 * Permite actualizar numFicha.
	 * @param numFicha, tipo String.
	 */
	public void setNumFicha(String numFicha) {
		this.numFicha = numFicha;
	}

	/**
	 * Metodo que permite obtener indModalidadArbitro.
	 * @return indModalidadArbitro , tipo Integer.
	 */
	public Integer getIndModalidadArbitro() {
		return indModalidadArbitro;
	}

	/**
	 * Permite actualizar indModalidadArbitro.
	 * @param indModalidadArbitro, tipo Integer.
	 */
	public void setIndModalidadArbitro(Integer indModalidadArbitro) {
		this.indModalidadArbitro = indModalidadArbitro;
	}

	/**
	 * Metodo que permite obtener fechaModalidad.
	 * @return fechaModalidad , tipo Date.
	 */
	public Date getFechaModalidad() {
		return fechaModalidad;
	}

	/**
	 * Permite actualizar fechaModalidad.
	 * @param fechaModalidad, tipo Date.
	 */
	public void setFechaModalidad(Date fechaModalidad) {
		this.fechaModalidad = fechaModalidad;
	}

	/**
	 * Metodo que permite obtener idEstadoFicha.
	 * @return idEstadoFicha , tipo Long.
	 */
	public Long getIdEstadoFicha() {
		return idEstadoFicha;
	}

	/**
	 * Permite actualizar idEstadoFicha.
	 * @param idEstadoFicha, tipo Long.
	 */
	public void setIdEstadoFicha(Long idEstadoFicha) {
		this.idEstadoFicha = idEstadoFicha;
	}

	/**
	 * Metodo que permite obtener codIpRegistro.
	 * @return codIpRegistro , tipo String.
	 */
	public String getCodIpRegistro() {
		return codIpRegistro;
	}

	/**
	 * Permite actualizar codIpRegistro.
	 * @param codIpRegistro, tipo String.
	 */
	public void setCodIpRegistro(String codIpRegistro) {
		this.codIpRegistro = codIpRegistro;
	}

	/**
	 * Metodo que permite obtener anioRegistro.
	 * @return anioRegistro , tipo Integer.
	 */
	public Integer getAnioRegistro() {
		return anioRegistro;
	}

	/**
	 * Permite actualizar anioRegistro.
	 * @param anioRegistro, tipo Integer.
	 */
	public void setAnioRegistro(Integer anioRegistro) {
		this.anioRegistro = anioRegistro;
	}

	/**
	 * Metodo que permite obtener estado.
	 * @return estado , tipo Long.
	 */
	public Long getEstado() {
		return estado;
	}

	/**
	 * Permite actualizar estado.
	 * @param estado, tipo Long.
	 */
	public void setEstado(Long estado) {
		this.estado = estado;
	}

	/**
	 * Metodo que permite obtener auditoria.
	 * @return auditoria , tipo Auditoria.
	 */
	public Auditoria getAuditoria() {
		return auditoria;
	}

	/**
	 * Permite actualizar auditoria.
	 * @param auditoria, tipo Auditoria.
	 */
	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}

	/**
	 * Metodo que permite obtener listaFormacionAcademica.
	 * @return listaFormacionAcademica , tipo List<FormacionAcademica>.
	 */
	public List<FormacionAcademica> getListaFormacionAcademica() {
		return listaFormacionAcademica;
	}

	/**
	 * Permite actualizar listaFormacionAcademica.
	 * @param listaFormacionAcademica, tipo List<FormacionAcademica>.
	 */
	public void setListaFormacionAcademica(
			List<FormacionAcademica> listaFormacionAcademica) {
		this.listaFormacionAcademica = listaFormacionAcademica;
	}

	/**
	 * Metodo que permite obtener listaEspecialidadAcademica.
	 * @return listaEspecialidadAcademica , tipo List<EspecialidadAcademica>.
	 */
	public List<EspecialidadAcademica> getListaEspecialidadAcademica() {
		return listaEspecialidadAcademica;
	}

	/**
	 * Permite actualizar listaEspecialidadAcademica.
	 * @param listaEspecialidadAcademica, tipo List<EspecialidadAcademica>.
	 */
	public void setListaEspecialidadAcademica(
			List<EspecialidadAcademica> listaEspecialidadAcademica) {
		this.listaEspecialidadAcademica = listaEspecialidadAcademica;
	}

	/**
	 * Metodo que permite obtener listaCapacitacion.
	 * @return listaCapacitacion , tipo List<Capacitacion>.
	 */
	public List<Capacitacion> getListaCapacitacion() {
		return listaCapacitacion;
	}

	/**
	 * Permite actualizar listaCapacitacion.
	 * @param listaCapacitacion, tipo List<Capacitacion>.
	 */
	public void setListaCapacitacion(List<Capacitacion> listaCapacitacion) {
		this.listaCapacitacion = listaCapacitacion;
	}

	/**
	 * Metodo que permite obtener listaDocencia.
	 * @return listaDocencia , tipo List<Docencia>.
	 */
	public List<Docencia> getListaDocencia() {
		return listaDocencia;
	}

	/**
	 * Permite actualizar listaDocencia.
	 * @param listaDocencia, tipo List<Docencia>.
	 */
	public void setListaDocencia(List<Docencia> listaDocencia) {
		this.listaDocencia = listaDocencia;
	}

	/**
	 * Metodo que permite obtener listaTrayectoria.
	 * @return listaTrayectoria , tipo List<TrayectoriaArbitral>.
	 */
	public List<TrayectoriaArbitral> getListaTrayectoria() {
		return listaTrayectoria;
	}

	/**
	 * Permite actualizar listaTrayectoria.
	 * @param listaTrayectoria, tipo List<TrayectoriaArbitral>.
	 */
	public void setListaTrayectoria(List<TrayectoriaArbitral> listaTrayectoria) {
		this.listaTrayectoria = listaTrayectoria;
	}

	/**
	 * Metodo que permite obtener listaExpLaboral.
	 * @return listaExpLaboral , tipo List<ExperienciaLaboral>.
	 */
	public List<ExperienciaLaboral> getListaExpLaboral() {
		return listaExpLaboral;
	}

	/**
	 * Permite actualizar listaExpLaboral.
	 * @param listaExpLaboral, tipo List<ExperienciaLaboral>.
	 */
	public void setListaExpLaboral(List<ExperienciaLaboral> listaExpLaboral) {
		this.listaExpLaboral = listaExpLaboral;
	}

	/**
	 * Metodo que permite obtener persona.
	 * @return persona , tipo Persona.
	 */
	public Persona getPersona() {
		return persona;
	}

	/**
	 * Permite actualizar persona.
	 * @param persona, tipo Persona.
	 */
	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	/**
	 * Metodo que permite obtener listaHistorialEstado.
	 * @return listaHistorialEstado , tipo List<HistorialEstado>.
	 */
	public List<HistorialEstado> getListaHistorialEstado() {
		return listaHistorialEstado;
	}

	/**
	 * Permite actualizar listaHistorialEstado.
	 * @param listaHistorialEstado, tipo List<HistorialEstado>.
	 */
	public void setListaHistorialEstado(List<HistorialEstado> listaHistorialEstado) {
		this.listaHistorialEstado = listaHistorialEstado;
	}

	/**
	 * Metodo que permite obtener tipoFicha.
	 * @return tipoFicha , tipo String.
	 */
	public String getTipoFicha() {
		return tipoFicha;
	}

	/**
	 * Permite actualizar tipoFicha.
	 * @param tipoFicha, tipo String.
	 */
	public void setTipoFicha(String tipoFicha) {
		this.tipoFicha = tipoFicha;
	}

	/**
	 * Metodo que permite obtener listaAcreditacion.
	 * @return listaAcreditacion , tipo List<Acreditacion>.
	 */
	public List<Acreditacion> getListaAcreditacion() {
		return listaAcreditacion;
	}

	/**
	 * Permite actualizar listaAcreditacion.
	 * @param listaAcreditacion, tipo List<Acreditacion>.
	 */
	public void setListaAcreditacion(List<Acreditacion> listaAcreditacion) {
		this.listaAcreditacion = listaAcreditacion;
	}
	
	
	
}
